__author__ = 'Muscle'


from mui import *
from mui.Widgets import *
import time
import mui.color as color

class MyWindow(MUIWindow):
    def __init__(self, **kwargs):
        MUIWindow.__init__(self, **kwargs)

        self.background = 'dialog\\volume_bg.png |(10,10,10,10)'
        self.button1 = MUITextButton(self, left = 20, top = 20, width = 200, height = 40, name = 'btn', text = 'btn 1', fontColor = color.white)
        self.muicomp4 = MUIImage(self, left = 400, top = 300, width = 200, height = 160, image = 'testImg.jpg', stretch = 'Fill', bClip = False, bgColor = (0, 0, 0, 0))

        self.button1.command = 'Run Anim'
        self.bindCmd('Run Anim', self.onRunAnim)
        
        # for FPS
        self.__fpsCount = 0
        self.__fpsTimeStart = 0;
        self.__fosTimeEnd = 0;
        self.fpsText = MUIText(self, right = self.width-20, top = 20, width = 200, height = 40, text = "FPS: 0", fontSize = 20, fontColor = color.blue, fontWeight = 'Bold')
        self.bindData('width', self.fpsText, 'right', dir = '->', converter =  lambda x: x-20 )

    def on_paint(self):
        if (self.__fpsCount == 0):
            self.__fpsTimeStart = time.clock()
        super(MyWindow, self).on_paint()
        self.__fpsCount += 1

        if (self.__fpsCount >= 120):
            self.__fpsTimeEnd = time.clock()
            diffTime = self.__fpsTimeEnd - self.__fpsTimeStart
            fps = self.__fpsCount / diffTime
            self.fpsText.text = "FPS: " + str(int(fps))
            self.__fpsCount = 0


    def onRunAnim(self, comp):
        if (hasattr(self, '_anim1') and self._anim1 != None):
            if self._anim1.state == AnimState.Pause:
                self._anim1.start()
            else:
                self._anim1.pause()
        else:
            animTask = anim.AnimTask(self.muicomp4, 'left', anim.AnimDecay([0, 0.5, 1.0], [0, 300, 0], 5.0, bLoop=True))
            if (animTask.start()):
                self._anim1 = animTask

def main():
    mui.muiInit(main)
    g_DXDevice = muiDX.CDXDevice()
    w = MyWindow(width = 1024, height = 768, dxDevice = g_DXDevice)
    w.ShowWindow(1)
    muiApp.run()
    g_DXDevice.Release()
    mui.muiUnInit()



main()
